// 通用方法 dispatch  getValue  setValue  setConfig
const commonMethods = [{
  key: 'getValue',
  params: [],
  alias: '获取值',
  hasReturn: true
},
{
  key: 'setValue',
  alias: '设置值',
  params: [{ type: 'any', alias: '值' }],
  hasReturn: false
},
{
  key: 'setConfig',
  alias: '设置配置',
  params: [{ type: 'object', alias: '配置' }],
  hasReturn: false
}]
const config = {
  hlInput: [],
  hlInputNumber: [],
  hlTextarea: [],
  hlMoneyInput: [],
  hlCalculation: [], // 计算公式
  hlUppercase: [], // 大写转换
  hlcustomBtn: [], // 自定义按钮
  hlButton: [],
  hlSwitch: [],
  hlFileImage: [],
  hlFile: [],
  hlDatePicker: [],
  hlTimePicker: [],
  hlTableAdd: [], // 子表
  hlLink: [], // 链接
  hlExplain: [], // 文本
  hlQrcodeDecoder: [], // 识别二维码
  hlSelect: [
    {
      key: 'setData',
      alias: '自定义下拉选项集合',
      params: [{ type: 'datalist', alias: '下拉选项集合' }],
      hasReturn: false
    },
    {
      key: 'getData',
      alias: '获取下拉选项集合',
      params: [],
      hasReturn: 'datalist'
    },
    {
      key: 'getSelectData',
      alias: '获取所选中的对象集合',
      params: [],
      hasReturn: 'Object'
    }
  ],
  hlCheckbox: [
    {
      key: 'getSelectData',
      alias: '获取所选中的对象集合',
      params: [],
      hasReturn: 'Object'
    }
  ],
  hlDepartment: [
    {
      key: 'getSelectData',
      alias: '获取所选中的对象集合',
      params: [],
      hasReturn: 'Object'
    }
  ],
  hlPersonnel: [
    {
      key: 'getSelectData',
      alias: '获取所选中的对象集合',
      params: [],
      hasReturn: 'Object'
    }
  ],
  hlRadio: [
    {
      key: 'getSelectData',
      alias: '获取所选中的对象集合',
      params: [],
      hasReturn: 'Object'
    }
  ],
  hlSelectTree: [
    {
      key: 'reload',
      alias: '重新加载',
      params: [],
      hasReturn: false
    },
    {
      key: 'disabledNode',
      alias: '禁用节点',
      params: [{ type: 'String', alias: '节点id' }],
      hasReturn: false
    },
    {
      key: 'addSearchData',
      alias: '添加查询参数', // 参数object 添加data对象参数Object.assign    浅拷贝合并
      params: [{ type: 'Object', alias: '对象参数' }],
      hasReturn: false
    }
  ],
  // form实例  表单
  hlLayoutForm: [
    {
      key: 'reset',
      alias: '重置表单',
      params: null,
      hasReturn: null
    },
    // {
    //   key: 'validate',
    //   alias: '表单验证',
    //   params: null,
    //   hasReturn: 'promise'
    // },
    {
      key: 'getValues',
      params: [],
      alias: '获取表单键值对象',
      hasReturn: 'object'
    },
    {
      key: 'setValues',
      params: [{ type: 'Object', alias: '值' }],
      alias: '设置表单值',
      hasReturn: null
    },
    {
      key: 'addValues',
      params: [{ type: 'Object', alias: '对象参数' }],
      alias: '给form添加对象参数',
      hasReturn: null
    }
    // 参数{taskId, serviceKey, processKey}  自定义流程处理，返回promise
    // 参数  taskId 流程id 非必填 serviceKey 服务id 非必填 processKey 流程key  必填
    // {
    //   key: 'handProcessEvent',
    //   params: ['taskId', 'serviceId', 'processKey'],
    //   alias: '自定义流程处理',
    //   hasReturn: 'promise'
    // },
    // {
    //   key: 'transferProcessEvent',
    //   params: ['serviceKey'],
    //   alias: '转办逻辑',
    //   hasReturn: 'promise'
    // }
  ],
  // 表格
  hlTableList: [
    {
      key: 'setData',
      alias: '设置grid数据',
      params: [{ type: 'Array', alias: '数据' }],
      hasReturn: false
    },
    {
      key: 'getData',
      alias: '获取grid数据',
      params: [],
      hasReturn: 'Array'
    },
    {
      key: 'reload',
      alias: '重新加载',
      params: [{ type: 'Object', alias: '对象参数' }], // 非必填
      hasReturn: false
    },
    {
      key: 'getSelected',
      alias: '获取选中记录',
      params: [],
      hasReturn: 'Array'
    },
    {
      key: 'setSelectedByIndex',
      alias: '选中或者取消复选框记录(通过index)',
      params: [{ type: 'Array', alias: '索引集合' },
        { type: 'Boolean', alias: '是否选中' }],
      hasReturn: false
    },
    {
      key: 'setSelected',
      alias: '选中或者取消复选框记录(通过key)',
      params: [{ type: 'Array', alias: '索引集合' },
        { type: 'Boolean', alias: '是否选中' }],
      hasReturn: false
    },
    {
      key: 'addSearchData',
      alias: '添加查询参数',
      params: [{ type: 'Object', alias: '对象参数' }],
      hasReturn: false
    },
    {
      key: 'cancelData',
      alias: '取消列表自动查询功能',
      params: [],
      hasReturn: false
    }
  ],
  // tab 标签
  'hlLayoutTab': [
    {
      key: 'getTabValue',
      alias: '获取标签页Id',
      params: [],
      hasReturn: 'String'
    },
    {
      key: 'setTabValue',
      alias: '设置标签页Id',
      params: [{ type: 'String', alias: '标签页Id' }],
      hasReturn: false
    },
    {
      key: 'setTabToDisabled',
      alias: '设置选项卡是否可以点击',
      params: [{ type: 'String', alias: '选项卡Id' },
        { type: 'Boolean', alias: '是否禁用' }],
      hasReturn: false
    }
    // setTabToDisabled	第一个参数 类型：string说明：选项卡的id值 第二个参数  类型：boolean 说明：true 禁用 false 可选

  ],
  // 分组页
  'hlLayoutItem': [
    // todo 到底别名是啥
    {
      key: 'getTabValue',
      alias: '获取分组打开状态',
      params: [],
      hasReturn: 'Boolean'
    },
    {
      key: 'setTabValue',
      alias: '打开或关闭分组',
      params: [{ type: 'Boolean', alias: '是否打开' }],
      hasReturn: false
    }
  ],
  // 菜单tree
  'hlTree': [
    {
      key: 'reload',
      alias: '重新加载',
      params: [],
      hasReturn: false
    },
    { key: 'getValues',
      params: [],
      alias: '获取当前选中的节点对象',
      hasReturn: 'Object'
    },
    {
      key: 'addSearchData',
      alias: '添加查询参数',
      params: [{ type: 'Object', alias: '对象参数' }],
      hasReturn: false
    }
  ],
  // '工序图实例'
  'hlProcess': [
    {
      key: 'getData',
      alias: '获取工序图配置JSON',
      params: [],
      hasReturn: 'Object'
    },
    {
      key: 'setData',
      alias: '设置工序图',
      params: [{ type: 'Object', alias: 'JSON配置' }],
      hasReturn: false
    },
    { key: 'getSelectNode',
      params: [],
      alias: '获取当前选中的节点对象',
      hasReturn: 'Object'
    },
    { key: 'editSelectNodeName',
      params: [{ type: 'String', alias: '节点名称' }],
      alias: '设置选中节点名称',
      hasReturn: false
    }
  ],
  // 步骤条
  'hlStep': [
    {
      key: 'getSetpValue',
      alias: '获取激活步骤序号',
      params: [],
      hasReturn: 'Number'
    },
    {
      key: 'setSetpValue',
      alias: '设置激活步骤',
      params: [{ type: 'Number', alias: '步骤序号' }],
      hasReturn: 'Number'
    },
    {
      key: 'nextStep',
      alias: '当前状态改为下一步',
      params: [],
      hasReturn: false
    }
  ],
  // 思维导图
  'hlMindmap': [
    {
      key: 'reload',
      alias: '重新加载',
      params: [], // 非必填
      hasReturn: false
    },
    {
      key: 'getSelectedValue',
      alias: '获取选中节点的对象',
      params: [], // 非必填
      hasReturn: 'Object'
    },
    {
      key: 'addSearchData',
      alias: '添加查询参数',
      params: [{ type: 'Object', alias: '对象参数' }],
      hasReturn: false
    },
    {
      key: 'getTreeNodeById',
      alias: '根据id查询节点',
      params: [{ type: 'String', alias: '节点的id' }],
      hasReturn: 'Object'
    },
    {
      key: 'fitView',
      alias: '刷新视图',
      params: [{ type: 'Number', alias: '画布的内边距' }],
      hasReturn: false
    }
  ],
  hlQrcode: [], // 二维码
  hlWorkflow: [],
  hlCascader: [], // 日历
  hliframe: []

}
const componentConfig = {}
for (const key in config) {
  componentConfig[key] = [...new Set([...commonMethods, ...config[key]])]
}
export const componentFuncConfig = componentConfig
export const commonConfig = commonMethods
